home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 4 / FM Towns Free Software Collection 4 - Disc 1.iso / fb386 / pickup / g_savior.bas < prev    next >
BASIC Source File  |  1991-10-18  |  9KB  |  240 lines

  1. 0 KEY (1) ON :ON KEY (1) GOSUB 65010:PLAY OFF
  2. 10 '
  3. 20 ' THE GREATEST SAVIOR / by Kazuya Shimada
  4. 30 '
  5. 40 DEFINT A-Z
  6. 50 DIM T(4,9),D(47),V(23)
  7. 60 PLAY OFF:BGM 1:LOAD@"PDRUMS.PMB":LOAD@ "Q:\FJ\FM\FM_1.FMB"
  8. 70 FOR I=0 TO 13:PART I,I:NEXT I
  9. 80 '----
  10. 90 GOSUB *READ_DATA
  11. 100 '    AF                     PAN PMS AMS
  12. 110 DATA 62,  0,  0,  0,  0,  0,  3,  0,  0,  0
  13. 120 '    AR  DR  SR  RR  SL  TL  KS  ML  DT        main
  14. 130 DATA 31,  3,  4,  4,  4, 29,  1,  2,  0,  0
  15. 140 DATA 31,  5,  2,  4,  4, 12,  1,  2,  0,  0
  16. 150 DATA 31,  4,  3,  4,  4, 12,  1,  5,  1,  0
  17. 160 DATA 31,  2,  2,  7,  4, 12,  0,  6,  0,  0
  18. 170 GOSUB *VOICE_SET:VOICE 1,V,0
  19. 180 '----
  20. 190 GOSUB *READ_DATA
  21. 200 '    AF                     PAN PMS AMS
  22. 210 DATA 58,  0,  0,  0,  0,  0,  3,  0,  0,  0
  23. 220 '    AR  DR  SR  RR  SL  TL  KS  ML  DT        chord
  24. 230 DATA 31,  0,  1,  5,  1, 32,  1,  4,  0,  0
  25. 240 DATA 31,  1,  1,  4,  0, 32,  1,  4,  0,  0
  26. 250 DATA 31,  1,  0,  7,  1, 32,  1,  2,  0,  0
  27. 260 DATA 31,  1,  2,  9,  1,  8,  1,  2,  3,  0
  28. 270 GOSUB *VOICE_SET:VOICE 2,V,0
  29. 280 '----
  30. 290 GOSUB *READ_DATA
  31. 300 '    AF                     PAN PMS AMS
  32. 310 DATA 56,  0,  0,  0,  0,  0,  3,  0,  0,  0
  33. 320 '    AR  DR  SR  RR  SL  TL  KS  ML  DT        syn.2
  34. 330 DATA 31,  0,  0,  9,  0, 31,  1,  2,  7,  0
  35. 340 DATA 31,  0,  0,  9,  0, 25,  1,  2,  7,  0
  36. 350 DATA 31,  0,  0,  9,  0, 32,  1,  2,  7,  0
  37. 360 DATA 31,  0,  0,  9,  0,  7,  1,  2,  7,  0
  38. 370 GOSUB *VOICE_SET:VOICE 3,V,0
  39. 380 '----
  40. 390 GOSUB *READ_DATA
  41. 400 '    AF                     PAN PMS AMS
  42. 410 DATA 27,  0,  0,  0,  0,  0,  3,  0,  0,  0
  43. 420 '    AR  DR  SR  RR  SL  TL  KS  ML  DT        e.bass
  44. 430 DATA 31, 15, 14,  9,  6, 38,  1,  4,  0,  0
  45. 440 DATA 31, 11, 12,  5,  5, 33,  1,  0,  0,  0
  46. 450 DATA 31,  8,  7,  5,  3, 33,  1,  1,  3,  0
  47. 460 DATA 31,  6,  5,  7,  3,  1,  1,  1,  3,  0
  48. 470 GOSUB *VOICE_SET:VOICE 4,V,0
  49. 480 '----
  50. 490 GOTO 680
  51. 500 *VOICE_SET
  52. 510 D%(32)=T%(0,0)
  53. 520 FOR I%=0 TO 3:J%=I%+1
  54. 530 D%( 8+I%)=(T%(J%,8) AND 7)*16+(T%(J%,7) AND 15)
  55. 540 D%(12+I%)=(T%(J%,5) AND 127)
  56. 550 D%(16+I%)=(T%(J%,6) AND 3)*64+(T%(J%,0) AND 31)
  57. 560 D%(20+I%)=T%(J%,1) AND 31
  58. 570 D%(24+I%)=T%(J%,2) AND 31
  59. 580 D%(28+I%)=(T%(J%,4) AND 15)*16+(T%(J%,3) AND 15)
  60. 590 NEXT
  61. 600 D%(33)=((T%(0,6) AND 3)*64)+((T%(0,7) AND 3)*16)+((T%(0,8) AND 7)):'D%(34)=0
  62. 610 FOR I%=0 TO 47 STEP 2:L&=D%(I%+1)*256+D%(I%)
  63. 620 IF L&<&H8000 THEN V%(I%\2)=CINT(L&) ELSE V%(I%\2)=CINT(L&-&H10000)
  64. 630 NEXT:RETURN
  65. 640 '----
  66. 650 *READ_DATA
  67. 660 FOR X=0 TO 4:FOR Y=0 TO 9:READ T%(X,Y):NEXT Y:NEXT X
  68. 670 RETURN
  69. 680 GOSUB 1300
  70. 690 T$="T144%CU0Q8"
  71. 700 PLAY T$,T$,T$,T$,T$,T$,T$,T$,T$,T$,T$,T$,T$,T$
  72. 710 A0$="V12L8O4F4.CF.G+.>C <B-16G+16GGG+B-2"
  73. 720 C0$="L8O4F16&F4.CF.G+.>C <B-16G+16GGG+B-4.&B-16"
  74. 730 D0$="@2V12L1O3G+ G"
  75. 740 E0$="@2V12L1O4C <B-"
  76. 750 F0$="@4V11L8O2(F>F<)4 (E->E-<)4"
  77. 760 G0$="@3V15L4O3ARAR ARAR"
  78. 770 H0$="V15L4O4RERE RERE"
  79. 780 'I0$="@4V15L16O6((A8AA)4)2"
  80. 790 I0$="@4V15L16O4((AAAA)4)2"
  81. 800 J0$="V13L4O4C2..<G+8 B-1"
  82. 810 A1$="O4E-4.<B->E-.G.B- G+G16F16&F4C+4E-4"
  83. 820 C1$="O4E-16&E-4.<B->E-.G.B- G+G16F16&F4C+4E-8."
  84. 830 D1$="O3G G+2F4G4"
  85. 840 E1$="O3B- >C2<G+4B-4"
  86. 850 F1$="O2(E->E-<)4 (C+>C+<)3E->E-"
  87. 860 G1$="O3ARAR ARAR"
  88. 870 H1$="O4RERE RERL16EEEE"
  89. 880 J1$="O3G1 >C2<G+A+"
  90. 890 A2$="O4F4.CF.G+.>C <B-16G+16GGB->E-2"
  91. 900 C2$="O4F16&F4.CF.G+.>C <B-16G+16GGB->E-4.&E-16"
  92. 910 A3$="O4E-8<B-8L16B-B->G+G+L8G+GGG+ G.F16F4F4E-4"
  93. 920 C3$="O4E-16&E-8<B-8L16B-B->G+G+L8G+GGG+ G.F16F4F4E-8."
  94. 930 D3$="O3G E-8.D-2&D-16"
  95. 940 E3$="O3B- G8.F2.&F16"
  96. 950 F3$="O2(E->E-<)4 (C+>C+<)4"
  97. 960 G3$="O3ARAR ARAR"
  98. 970 H3$="O4RERE RER8L16EEEEEE"
  99. 980 J3$="O3B-1 B-2G+4G4"
  100. 990 A4$="O4L8D-4.D-16E-16F.E-.D- G.F.E-G+.G.F"
  101. 1000 C4$="U120@3V12O4L8D-4.D-16E-16F.E-.D- G.F.E-G+.G.F"
  102. 1010 D4$="O3F G2F2"
  103. 1020 E4$="O3G+ B-2G+2"
  104. 1030 F4$="O2((D->D-<)4)2"
  105. 1040 J4$="O3G+2..G8 G+1"
  106. 1050 A5$="O4G.G+.G&G2 G.G+.G&G2"
  107. 1060 C5$="O4G.G+.G&G2 V15U0L16CDEF DEFG EFGG+ FGG+B-U80V12"
  108. 1070 D5$="O3E E"
  109. 1080 E5$="O3G G"
  110. 1090 F5$="O2((C>C<)4)2"
  111. 1100 J5$="O3G+1 G+2G2"
  112. 1110 A6$="O4L8D-4.D-16E-16F.E-.D- G.F.E-B-.G+.G16F16"
  113. 1120 C6$="U120O4L8D-4.D-16E-16F.E-.D- G.F.E-B-.G+.G16F16"
  114. 1130 A7$="O4G1 G+2G2"
  115. 1140 C7$="O4G1 G+2G2"
  116. 1150 D7$="O3E F2E2"
  117. 1160 E7$="O3G G+2G2"
  118. 1170 F7$="O2(G>G<)4G>G<G+>G++<A>A<B->B-"
  119. 1180 G7$="O3ARAR ARAR"
  120. 1190 H7$="O4RER8E8L16EEEE L4REL16EEEEEEEE"
  121. 1200 J7$="O3G1 >C2<B-2"
  122. 1210 PLAY "@1%C"+A0$,"@1%CU40"+A0$,"@1V8U80"+C0$,D0$,E0$,F0$,G0$,"@2%R"+H0$,I0$,"U20@2%L"+H0$,"@14%L"+J0$,"U40@14%R"+J0$,"U120"+I0$
  123. 1220 PLAY A1$,A1$,C1$,D1$,E1$,F1$,G1$,H1$,I0$,H1$,J1$,J1$,I0$
  124. 1230 PLAY A2$,A2$,C2$,D0$,E0$,F0$,G0$,H0$,I0$,H0$,J0$,J0$,I0$
  125. 1240 PLAY A3$,A3$,C3$,D3$,E3$,F3$,G3$,H3$,I0$,H3$,J3$,J3$,I0$
  126. 1250 PLAY A4$,A4$,C4$,D4$,E4$,F4$,G0$,H0$,I0$,H0$,J4$,J4$,I0$
  127. 1260 PLAY A5$,A5$,C5$,D5$,E5$,F5$,G1$,H1$,I0$,H1$,J5$,J5$,I0$
  128. 1270 PLAY A6$,A6$,C6$,D4$,E4$,F4$,G0$,H0$,I0$,H0$,J4$,J4$,I0$
  129. 1280 PLAY A7$,A7$,C7$,D7$,E7$,F7$,G7$,H7$,I0$,H7$,J7$,J7$,I0$
  130. 1290 GOTO 1210
  131. 1300 '
  132. 1400 GOSUB *SCREEN
  133. 1410 I$=INKEY$
  134. 1420 IF I$="" THEN 1410
  135. 1430 GOSUB *F_OUT:SCREEN@ 1:CLS
  136. 1440 LINE(0,0)-(319,119),PSET,[0,128,64],BF
  137. 1450 FOR I=0 TO 119
  138. 1460 PASTEL I*.7!
  139. 1470 LINE(0,I)-(319,I),PASTEL,6
  140. 1480 NEXT
  141. 1490 PASTEL 64
  142. 1500 Y=120:VY=1:C=0
  143. 1510 LINE(0,Y)-(319,Y+VY-1),PSET,[0,C,0],BF
  144. 1520 C=C+8
  145. 1530 Y=Y+VY:VY=VY+1:IF Y<240 THEN 1510
  146. 1540 FOR J=0 TO 1
  147. 1550 X=108:XX=X
  148. 1560 FOR I=0 TO 119
  149. 1570 X=X+INT(RND*8)-INT(RND*8)
  150. 1580 LINE(X,I)-(XX,I-1),PSET,6:XX=X
  151. 1590 NEXT
  152. 1600 NEXT
  153. 1610 CIRCLE(120,80),30,5,,,,F,PASTEL
  154. 1620 CIRCLE(225,93),30,5,,,,F,PASTEL
  155. 1630 FOR I=0 TO 16
  156. 1640 CONNECT(120,80-I)-(225,93-I)-(248,158-I)-(44,126-I),[0,0,I*6+128],PSET,F
  157. 1650 NEXT
  158. 1660 I=70
  159. 1670 CONNECT(120,80+I)-(225,93+I)-(248,158+I)-(44,126+I),[0,0,64],PASTEL,F
  160. 1680 PASTEL 128
  161. 1690 CIRCLE(44,126),40,5,,,,F,PASTEL
  162. 1700 CIRCLE(248,158),40,5,,,,F,PASTEL
  163. 1710 SYMBOL (161,0),"THE GREATEST SAVIOR",.5!,1,0
  164. 1720 SYMBOL (160,0),"THE GREATEST SAVIOR",.5!,1,7
  165. 1730 RETURN
  166. 17000 *SCREEN
  167. 17010 SCREEN@ 0 : PALETTE@
  168. 17020 FOR I=0 TO 15 : PALETTE I,[0,0,0] : NEXT
  169. 17030 COLOR ,%5 : CLS
  170. 17040 X=630 : Y=30 : MX=2 : MY=3: R=3 : C1=1 : C2=5 : C3=15 : F=16
  171. 17050 ST$="PICK UP TOWNS" : GOSUB *STR_PUT
  172. 17060 X=575 : Y=30 : MX=2 : MY=3 : R=3 : C1=1 : C2=5 : C3=15 : F=16
  173. 17070 ST$="MUSIC PROGRAM" : GOSUB *STR_PUT
  174. 17080 GOSUB *F_IN : FOR I=0 TO 2000 : NEXT
  175. 17090 X1=10 : X2=510 : Y1=10 : Y2=460 : C1=1 : C2=6 : C3=15
  176. 17100 GOSUB *WAKU
  177. 17110 X1=20 : X2=500 : Y1=20 : Y2=90 : C1=15 : C2=7 : C3=5
  178. 17120 GOSUB *WAKU
  179. 17130 X1=20 : X2=500 : Y1=420 : Y2=450 : C1=15 : C2=7 : C3=5
  180. 17140 GOSUB *WAKU
  181. 17150 X1=20 : X2=500 : Y1=100 : Y2=410 : C1=15 : C2=7 : C3=5
  182. 17160 GOSUB *WAKU
  183. 17170 SYMBOL (30,430),"PF1キーを押すと、演奏を中断して音楽MENUに戻ります。",1,1,0,,,1
  184. 17180 SYMBOL (30,30)," TITLE ",1,1,0,0,PSET,17
  185. 17190 SYMBOL (80,53),"THE GREATEST SAVIOR",1,2,0,0,PSET,1
  186. 17200 SYMBOL (30,110)," DATA ",1,1,0,0,PSET,17
  187. 17210 SYMBOL (80,140),"Programed by KAZUYA SHIMADA",1,1,0,0,PSET,1,1
  188. 17220 SYMBOL (80,160)," Composed by KAZUYA SHIMADA",1,1,0,0,PSET,1,1
  189. 17230 SYMBOL (30,200)," MESSAGE ",1,1,0,0,PSET,17
  190. 17240 'ST$()="・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・"
  191. 17250 ST$(0)=" THE LIGHT SOLDIER のアレンジです。"
  192. 17260 ST$(1)="しかしオーケストラヒットなんて初めてなので、うまくいき"
  193. 17270 ST$(2)="ませんでした。次は、もっと勉強して腕を磨くぞ。(でも、"
  194. 17280 ST$(3)="忙しくてそんな暇が無かったりする。)"
  195. 17290 ST$(4)=""
  196. 17300 ST$(5)="リターンキー、または実行キーを押すと演奏が始まります。"
  197. 17310 ST$(6)=""
  198. 17320 ST$(7)=""
  199. 17330 GOSUB *MESSAGE
  200. 17340 RETURN
  201. 17350 *STR_PUT
  202. 17360 SYMBOL (X,Y),ST$,MX,MY,%C1,R,PSET,F
  203. 17370 SYMBOL (X+1,Y),ST$,MX,MY,%C1,R,PSET,F
  204. 17380 SYMBOL (X+2,Y),ST$,MX,MY,%C1,R,PSET,F
  205. 17390 SYMBOL (X+2,Y-1),ST$,MX,MY,%C1,R,PSET,F
  206. 17400 SYMBOL (X+2,Y-2),ST$,MX,MY,%C1,R,PSET,F
  207. 17410 SYMBOL (X,Y-2),ST$,MX,MY,%C3,R,PSET,F
  208. 17420 SYMBOL (X+1,Y-2),ST$,MX,MY,%C3,R,PSET,F
  209. 17430 SYMBOL (X,Y-1),ST$,MX,MY,%C3,R,PSET,F
  210. 17440 SYMBOL (X+1,Y-1),ST$,MX,MY,%C2,R,PSET,F
  211. 17450 RETURN
  212. 17460 *WAKU
  213. 17470 LINE (X1+2,Y1+2)-(X2-2,Y2-2),PSET,%C2,BF
  214. 17480 CONNECT (X1,Y2)-(X1,Y1)-(X2,Y1),%C3
  215. 17490 CONNECT (X1+1,Y2-1)-(X1+1,Y1+1)-(X2-1,Y1+1),%C3
  216. 17500 CONNECT (X1+1,Y2)-(X2,Y2)-(X2,Y1+1),%C1
  217. 17510 CONNECT (X1+2,Y2-1)-(X2-1,Y2-1)-(X2-1,Y1+2),%C1
  218. 17520 RETURN
  219. 17530 *MESSAGE
  220. 17540 FOR I=0 TO 7
  221. 17550   SYMBOL (50,230+20*I),ST$(I),1,1,0,0,PSET,1
  222. 17560 NEXT I
  223. 17570 RETURN
  224. 17580 *F_OUT
  225. 17590 FOR I=16 TO 1 STEP -1 : GOSUB *PALETTE : NEXT I :COLOR ,%0: CLS: RETURN
  226. 17600 *F_IN
  227. 17610 FOR I=1 TO 16 : GOSUB *PALETTE : NEXT I : RETURN
  228. 17620 *PALETTE
  229. 17630 PALETTE 1,[0*I,0*I,1*I]
  230. 17640 PALETTE 2,[1*I,0*I,2*I]
  231. 17650 PALETTE 3,[2*I,1*I,3*I]
  232. 17660 PALETTE 4,[4*I,2*I,6*I]
  233. 17670 PALETTE 5,[8*I,6*I,9*I]
  234. 17680 PALETTE 6,[12*I,10*I,13*I]
  235. 17690 PALETTE 7,[14*I,13*I,15*I]
  236. 17700 PALETTE 15,[15*I,15*I,15*I]
  237. 17710 RETURN
  238. 65000 BGM 0:PLAY "R64":BGM 1
  239. 65010 KEY (1) OFF:PLAY OFF:FOR I=0 TO 13:PART I,I:NEXT:RUN"MENU.BAS"
  240.